package com.ms.teapuesto.jobs.util;

import com.ms.teapuesto.LogServer;
import com.ms.teapuesto.util.xsd.XsdReader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.ClassPathResource;

import java.io.IOException;
import java.util.Collections;
import java.util.List;

/**
 * User: JVergara
 * Date: 13/06/13
 */
public class PropertyNameReaderXsdImpl implements PropertyNameReader {
    private static final Logger LOG = LoggerFactory.getLogger(PropertyNameReaderXsdImpl.class);

    public List<String> getPropertyNames(String document, String section) {
        LOG.info("Recuperando propiedades para " + document);
        XsdReader xsdReader = new XsdReader();
        ClassPathResource resource = new ClassPathResource(document);
        try {
            List<String> propiedades = xsdReader.parseSchema(resource.getFile(), section, XsdReader.RETRIEVE_PROPERTIES_MODE);
            debugPropiedadesIdentificadas(propiedades);
            return propiedades;
        } catch (IOException e) {
            LogServer.log.error("Error recuperando propiedades para XSD: " + document, e);
        }
        return Collections.EMPTY_LIST;
    }

    private void debugPropiedadesIdentificadas(List<String> propiedades) {
        if (LOG.isDebugEnabled()) {
            LOG.debug("Propiedades identificadas");
            int cont = 1;
            for (String propiedad : propiedades) {
                LOG.debug("Propiedad " + cont++ + " = " + propiedad);
            }
        }
    }
}
